//
//  UIButton+RWAdditions.m
//  Alumna
//
//  Created by ray on 2021/11/26.
//

#import "UIButton+RWAdditions.h"

@implementation UIButton (XYTimer)

- (void)rw_startWithTime:(NSInteger)totalTime
                   title:(NSString *)title
                  prefix:(NSString *)prefix
                  suffix:(NSString *)suffix
                   color:(UIColor *)mainColor
              countColor:(UIColor *)countColor
{
    __weak typeof(self) weakSelf = self;
    //倒计时时间
    __block NSInteger timeOut = totalTime;
    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    dispatch_source_t _timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, queue);
    //每秒执行一次
    dispatch_source_set_timer(_timer, dispatch_walltime(NULL, 0), 1.0 * NSEC_PER_SEC, 0);
    dispatch_source_set_event_handler(_timer, ^{
        
        //倒计时结束，关闭
        if (timeOut <= 0) {
            dispatch_source_cancel(_timer);
            dispatch_async(dispatch_get_main_queue(), ^{
                [weakSelf setTitle:title forState:UIControlStateNormal];
                [weakSelf setTitleColor:mainColor forState:(UIControlStateNormal)];
                weakSelf.userInteractionEnabled = YES;
            });
        } else {
            int allTime = (int)totalTime + 1;
            int seconds = timeOut % allTime;
            NSString *timeStr = [NSString stringWithFormat:@"%d", seconds];
            NSString *prefStr = prefix?:@"";
            NSString *suffStr = suffix?:@"";
            dispatch_async(dispatch_get_main_queue(), ^{
                [weakSelf setTitle:[NSString stringWithFormat:@"%@%@%@",prefStr,timeStr,suffStr] forState:UIControlStateNormal];
                [weakSelf setTitleColor:countColor forState:(UIControlStateNormal)];
                weakSelf.userInteractionEnabled = NO;
            });
            timeOut--;
        }
    });
    dispatch_resume(_timer);
}
@end

@implementation UIButton (RWAdditions)

@end
